﻿Imports Logica
Public Class BusquedaUsuariosSalarioVariables

    ''' <summary>
    ''' Carga los datos de los usuarios.
    ''' </summary>
    ''' <param name="sender"></param>
    ''' <param name="e"></param>
    ''' <remarks>Creador por: Stephan Endres, Fecha: 06/07/2010, Modificado: 06/07/2010.</remarks>
    Private Sub BusquedaUsuariosSalarioVariables_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim data As New DataTable
        Dim usuarios As List(Of Hashtable)

        data.Columns.Add("Identificación")
        data.Columns.Add("Nombre y Apellidos")
        data.Columns.Add("Salario base")
        data.Columns.Add("Total ganancia")
        data.Columns.Add("Comisión")

        usuarios = Gestor.buscarEmpleadosTipoVariables()
        For Each usuario As Hashtable In usuarios

            data.Rows.Add(usuario("identificacion"), usuario("nombre") & " " & _
                              usuario("primerApellido") & " " & usuario("segundoApellido"), 0, 0, 0)
        Next

        If usuarios.Count = 0 Then
            lblError.Visible = True
            lblError.ForeColor = Color.Red
            lblError.Text = "No hay usuarios con salarios variables."
        End If

        dgvUsuarios.DataSource = data
        With dgvUsuarios
            For i As Integer = 0 To .Rows.Count - 2
                .Rows(i).Cells(0).ReadOnly = True
                .Rows(i).Cells(1).ReadOnly = True
                .Rows(i).Cells(2).ReadOnly = True
                .Rows(i).Cells(2).Value = Gestor.calcularSalarioVariable(CDbl(.Rows(i).Cells(3).Value), CDbl(.Rows(i).Cells(4).Value), CStr(.Rows(i).Cells(0).Value))
            Next

        End With

    End Sub

    ''' <summary>
    ''' Realiza los calculos al ingresar una comicion o un monto total
    ''' </summary>
    ''' <param name="sender"></param>
    ''' <param name="e"></param>
    ''' <remarks>Creador por: Stephan Endres, Fecha: 06/07/2010, Modificado: 06/07/2010.</remarks>
    Private Sub dgvUsuarios_CellEndEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvUsuarios.CellEndEdit
        With dgvUsuarios
            Try

                Dim totalGanancia As Integer = CInt(.Rows(e.RowIndex).Cells(e.ColumnIndex).Value)
                Dim comicion As Integer = CInt(.Rows(e.RowIndex).Cells(4).Value)

                If comicion >= 0 And comicion < 101 Then

                    If .Rows(e.RowIndex).Cells(e.ColumnIndex).Value = "" Then
                        .Rows(e.RowIndex).Cells(e.ColumnIndex).Value = 0
                    Else
                        Try
                            .Rows(e.RowIndex).Cells(2).Value = Gestor.calcularSalarioVariable(CDbl(.Rows(e.RowIndex).Cells(3).Value), CDbl(.Rows(e.RowIndex).Cells(4).Value), CStr(.Rows(e.RowIndex).Cells(0).Value))
                            lblError.Visible = False
                        Catch ex As Exception

                        End Try
                    End If
                Else
                    lblError.Visible = True
                    lblError.Text = "La comisión solo puede poseer valores entre 0 y 100."
                    .Rows(e.RowIndex).Cells(e.ColumnIndex).Value = 0
                End If
            Catch exc As InvalidCastException
                lblError.Visible = True
                lblError.Text = "Se insertó un valor no numérico."
                .Rows(e.RowIndex).Cells(e.ColumnIndex).Value = 0
            End Try
        End With
    End Sub

    ''' <summary>
    ''' Realiza el pago de los salarios
    ''' </summary>
    ''' <param name="sender"></param>
    ''' <param name="e"></param>
    ''' <remarks>Creador por: Stephan Endres, Fecha: 06/07/2010, Modificado: 06/07/2010.</remarks>
    Private Sub btnRealizarPago_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRealizarPago.Click
        Dim datos As New List(Of Object)
        Dim listaIds As New List(Of String)
        Dim listaSalariosBases As New List(Of Double)

        With dgvUsuarios
            For i As Integer = 0 To .Rows.Count - 1
                listaIds.Add(.Rows(i).Cells(0).Value)
                listaSalariosBases.Add(.Rows(i).Cells(2).Value)
            Next
        End With
        datos.Add(listaIds)
        datos.Add(listaSalariosBases)
        If MsgBox("¿Seguro que desea realizar el pago de los salarios?", MsgBoxStyle.OkCancel, "Realizar Pago") = MsgBoxResult.Ok Then

            Gestor.realizarPagoVariables(datos)
            Gestor.realizarPagoFijo()
            MsgBox("La realización de los pagos se han ejecutado con éxito", MsgBoxStyle.Information, "Realizar Pago")
            Me.Close()

        End If

    End Sub

    ''' <summary>
    ''' Muestra la pantalla de ayuda
    ''' </summary>
    ''' <param name="sender"></param>
    ''' <param name="e"></param>
    ''' <remarks>Creador por: Stephan Endres, Fecha: 06/07/2010, Modificado: 06/07/2010.</remarks>
    Private Sub lnklblAyuda_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles lnklblAyuda.LinkClicked
        MostrarAyuda.Show()
    End Sub

End Class